13079
848
아래에 주어진 데이터 세트가 있습니다.
이름 col1 col2
10.3 10.9
b 11 15
기음 20 7.2
d 6.2 6.2
전자 5.3 5.4
f 4.5 4.0
내 df의 col1과 col2를 비교하고 col2의 값이 col1에서 증가하면 col1과 col2 값을 비교하는 동안 내 열에 그 옆에 증가를 입력하고 싶습니다. 감소하는 경우 감소하고 변경 사항이 같으면 변경하지 않고 싶습니다.
그리고 나는 이와 같은 내 출력을 원한다.
이름 col1 col2 col3
10.3 10.9 증가
b 11 15 증가
c 20 7.2 감소
d 6.2 6.2 변경 없음
e 5.3 5.4 증가
f 4.5 4.0 감소 
dplyr 사용 :
df %> %
mutate (Col3 = ifelse (col2 == col1,
"변경 없음",
ifelse (col2> col1,
"증가", "감소")))
또는 @akrun이 제안한대로 case_when 사용 :
df %> %
mutate (Col3 = case_when (col1 == col2 ~ "변경 없음",
col2> col1 ~ "증가",
TRUE ~ "감소"))
결과:
이름 col1 col2 Col3
1 a 10.3 10.9 증가
2b 11.0 15.0 증가
3 c 20.0 7.2 감소
4 d 6.2 6.2 변경 없음
5 e 5.3 5.4 증가
6 f 4.5 4.0 감소
데이터:
df <-structure (list (name = c ( "a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), 클래스 = "data.frame", row.names = c (NA,
-6L))
|
col1을 col2로 뺀 다음 부호를 사용하여 값을 할당 할 수 있습니다.
df $ col3 <-c ( "감소", "변화 없음", "증가") [sign (df $ col1-df $ col2) + 2]
df
# 이름 col1 col2 col3
# 1 a 10.3 10.9 감소
# 2 b 11.0 15.0 감소
# 3 c 20.0 7.2 증가
# 4 d 6.2 6.2 변경 없음
# 5 e 5.3 5.4 감소
# 6 f 4.5 4.0 증가
또는 dplyr을 사용하여 case_when을 사용할 수 있습니다.
도서관 (dplyr)
df %> %
mutate (col3 = case_when (col1 == col2 ~ "변경 없음",
col1> col2 ~ "증가",
TRUE ~ "감소"))
|
베이스 R
df $ col3 <-with (df, ifelse (col1> col2, "감소",
ifelse (col1